package com.yf.dao.im;

import com.yf.dao.BaseDao;
import com.yf.entity.GroupUserEntity;
import com.yf.vo.GroupUserBackVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 群成员Dao
 *
 * @author hxf
 * @email 505860922@qq.com
 * @date Wed Aug 29 17:47:08 CST 2018
 */
public interface GroupUserDao extends BaseDao<GroupUserEntity> {

    /**
     * back 群聊成员
     * @param params
     * @return
     */
    List<GroupUserBackVo> findGroupUser(Map<String, Object> params);


    /**
     * 找出对应关系
     * @param userId
     * @param groupId
     * @return
     */
    GroupUserEntity findByGroupIdAndUserId(@Param("userId") Long userId, @Param("groupId") Long groupId);


    /**
     * 找出某个群的所有用户ID
     * @param groupId
     * @return
     */
    List<Long> findUserIdByGroupId(@Param("groupId") Long groupId);


    /**
     * 找出某个群的所有关系
     * @param groupId
     * @return
     */
    List<GroupUserEntity> findByGroupId(@Param("groupId") Long groupId);

    //删除某个群
    int deleteByGroupId(Long groupId);

    //删除某个人的某个群
    int deleteByGroupIdAndUserId(@Param("userId") Long userId, @Param("groupId") Long groupId);

    //查询某个人加入的所有群的Id
    List<Long> getGroupIdsByUserId(Long userId);

    //查找某个人所有在的群
    List<Long> findGroupIdByUserId(@Param("userId") Long userId);

    //批量插入群关系
    void joinGroup(@Param("groupId")Long groupId,@Param("userIds")List userIds);

}
